Организация фаззинг-тестирования многопоточных приложений на основе метода распараллеливания независимых переходов
Аннотация:
Предмет исследования. Современные информационные системы сложно представить без использования многопоточности. Многопоточность может как повышать производительность системы в целом, так и замедлять выполнение приложений за счет возникновения ошибок многопоточного программирования. Для нахождения таких ошибок на языках С/C++ существует модуль компилятора Google Thread Sanitizer. Но порядок выполнения потоков может каждый раз меняться при запуске программы на выполнение и влиять на появление подобных ошибок. Для многократного изменения порядка выполнения потоков за время работы программы в Google Thread Sanitizer применен модуль фаззинг-тестирования, который повысил вероятность нахождения ошибок. Все алгоритмы планирования потоков в фаззинг-модуле предназначены для последовательного выполнения потоков, что приводит к значительному замедлению работы Google Thread Sanitizer. Также происходит влияние на тестирование приложений, которое зависит от асинхронных взаимодействий (ожидания сетевых событий, ограничения времени выполнения операций). Метод. Для ускорения работы фаззингпланировщиков предложен метод распараллеливания независимых переходов. Ошибки многопоточного программирования возникают при изменении разделяемого состояния между потоками, при этом локальные вычисления не влияют на воспроизведение многопоточных ошибок. Изменение разделяемых состояний происходит в точках синхронизаций, где выполняется переключение потоков по принципу кооперативной многозадачности. Предложено осуществлять управление последовательностями выполнения потоков только при изменении разделяемых состояний в точках синхронизаций, а локальные вычисления выполнять параллельно. Данное условие позволило сократить время тестирования без снижения результативности обнаружения ошибок многопоточного программирования. Для анализа теоретической сложности алгоритма планирования применен метод комбинаторного подсчета. Основные результаты. Предложен новый подход организации фаззинг-тестирования на основе метода распараллеливания независимых переходов, реализация которого по теоретическим и практическим оценкам показывает заметное ускорение работы фаззинг-планировщиков. Результаты эксперимента показали, что для алгоритма перебора всех вариантов выполнения приложения ускорение выполнения достигает 1,25 раза для двух потоков. Представлено соотношение для оценки ускорения в случае произвольного числа потоков. Практическая значимость. Предложенный подход позволяет покрывать фаззинг-тестами многопоточные приложения, для которых важно время выполнения — приложения с привязкой к асинхронным взаимодействиям
Ключевые слова:
Постоянный URL
Статьи в номере
- Исследование дисперсионных свойств конгруэнтного кристалла ниобата лития терагерцовом диапазоне частот
- Исследование влияния наведенных механических напряжений, вызванных герметизацией стеклоприпоем, на значение коэффициента поляризационной экстинкции в двулучепреломляющем оптическом волокне
- Метод дистанционного контроля радиационных параметров космических аппаратов на основе рентгенофлуоресцентного анализа
- Волоконно-оптический амплитудный датчик направления и величины изгиба
- Компенсация внешних возмущений для многоканальных систем с запаздыванием в управлении
- Построение криптографических схем, основанных на эллиптических кривых над рациональными числами
- Алгоритм генерации проектных решений для управления данными и проектно-производственными процедурами на этапах жизненного цикла электронного изделия
- Способ повышения эффективности комплексной обработки данных дистанционного зондирования Земли при решении задач мониторинга пространственных объектов
- Разработка модели обнаружения сетевых аномалий трафика в беспроводных распределенных самоорганизующихся сетях
- Применение FN-корректора с целью повышения качества классификации аудиособытий
- Усиление роли микроархитектурных этапов проектирования встраиваемых систем
- Многомерный двоичный классификатор дерева решений на основе неглубокой нейронной сети
- Метод защиты нейронных сетей от компьютерных бэкдор-атак на основе идентификации триггеров закладок
- Программная инструментальная система создания адаптивных пользовательских интерфейсов
- Облегченная система рекомендаций для анализа социальных сетей с использованием гибридного алгоритма классификатора BERT-SVM
- Метод обнаружения инцидентов информационной безопасности по аномалиям в биометрических поведенческих чертах пользователя
- Моделирование случайных процессов на основе преобразования Карунена–Лоэва
- Управление численной диссипацией гибридного метода крупных частиц в задачах с вихревой неустойчивостью
- Численная модель импульсного подкритического стримерного сверхвысокочастотного разряда для задач плазменного поджига топливных смесей в газовой фазе
- Численное исследование прямой, винтовой и спиральной капиллярной трубок для хладагента CO2
- Восстановление информации в зашумленном канале методом фантомной визуализации со спектральным мультиплексированием в оптическом диапазоне